# 预定义一个空列表
# 列表名 = []
fruits = []
print(fruits)

# 定义列表
# 列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字 0~9 或所有家庭成员姓名的列表；也可以将任何东西加入列表中，其中的元素之间可以没有任何关系。
# 在 Python 中，用方括号 [] 来表示列表，并用逗号来分隔其中的元素。下面是一个简单的列表示例，其中包含几种水果：
fruits = ['apple', 'banana', 'orange', 'grape']
print(fruits)

# 访问列表元素
# 列表是有序集合，因此要访问列表的任何元素，只需将该元素的位置或索引告诉 Python 即可。要访问列表元素，可指出列表的名称，再指出元素的索引，并将其放在方括号内。
# 例如，假设我们有一个包含一系列水果的列表，下面的代码请求获取该列表中的第一个水果：
print(fruits[0])
print(fruits[1])
print(fruits[2])
print(fruits[3])

# 你还可以使用负数索引来访问列表中的元素，其中 -1 表示最后一个元素，-2 表示倒数第二个元素，以此类推。
print(fruits[-1])
print(fruits[-2])
print(fruits[-3])

# 使用列表中的各个值
message = f"My first bicycle was a {fruits[0].title()}."
print(message)

# 修改、添加和删除元素
# 修改列表元素的语法与访问列表元素的语法类似。要修改列表元素，可指定列表名和要修改的元素的索引，再指定该元素的新值。
# 例如，假设我们有一个包含一系列水果的列表，下面的代码将第一个元素（即 'apple'）改为 'pear'：
fruits[0] = 'pear'
print(fruits)

# 在列表末尾添加元素
# 方法 append()让动态地创建列表更加容易。
fruits.append('watermelon')
print(fruits)

# 在列表中插入元素
# 使用 insert() 方法可以在列表的任意位置添加新元素。为此，你需要指定新元素的索引和值。
fruits.insert(1, 'kiwi')
print(fruits)

# 从列表中删除元素
# 如果你要从列表中删除一个元素，且不再以任何方式使用它，就使用 del 语句；如果你要在删除元素后还能继续使用它，就使用方法 pop()。
# 使用 del 用于删除列表中指定位置的元素。例如，下面的代码将删除列表 fruits 中的第一个元素 'apple'：
del fruits[0]
print(fruits)

# 使用 pop() 方法删除元素
# 有时候，你要将元素从列表中删除，并接着使用它的值。
# 方法 pop() 可删除列表末尾的元素，并让你能够接着使用它。
# 术语弹出（pop）源自这样的类比：列表就像一个栈，而删除列表末尾的元素相当于弹出栈顶元素。
# 下面的代码演示了如何使用 pop() 方法删除列表中的最后一个元素，并将其存储到变量 last_fruit 中：
last_fruit = fruits.pop()
print(last_fruit)
print(fruits)

# 弹出列表中任何位置处的元素
# 你可以使用 pop() 来删除列表中任意位置的元素，只需在括号中指定要删除的元素的索引即可。
# 下面的代码演示了如何使用 pop() 方法删除列表 fruits 中的第二个元素 'banana'：
second_fruit = fruits.pop(1)
print(second_fruit)

# 根据值删除元素
# 有时候，你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值，可使用方法 remove()。
# 方法 remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次，就需要使用循环来判断是否删除了所有这样的值。
# 下面的代码演示了如何使用方法 remove() 从列表中删除值 'kiwi'：
fruits.remove('kiwi')
print(fruits)

# 列表元素反转，并永久修改
# 方法 reverse() 永久性地修改列表元素的排列顺序，但可随时恢复到原来的排列顺序，为此只需对列表再次调用 reverse() 即可。
# 下面的代码演示了如何使用方法 reverse() 反转列表 fruits 中的元素：
fruits.reverse()
print(fruits)

# 列表元素顺序排序，并永久修改
# 方法 sort() 对列表进行永久性排序。
# 下面的代码演示了如何使用方法 sort() 对列表 fruits 进行永久性排序：
print("----------------列表顺序排序----------------")
fruits.sort()
print(fruits)

# 列表元素逆序排序，并永久修改
# 下面的代码演示了如何使用方法 sort() 对列表 fruits 进行永久性排序：
print("----------------列表逆序排序reverse=True----------------")
fruits.sort(reverse=True)
print(fruits)

# 列表元素顺序排序，并临时修改
# 下面的代码演示了如何使用函数 sorted() 对列表 fruits 进行临时排序：
print("----------------列表顺序排序,临时修改----------------")
print(sorted(fruits))

# 列表元素逆序排序，并临时修改
# 下面的代码演示了如何使用函数 sorted() 传入reverse=True, 对列表 fruits 进行临时排序：
print("----------------列表逆序排序,临时修改---------------- ")
reversed_fruits = sorted(fruits, reverse=True)
print(reversed_fruits)

# 列表元素反转，注意这里不是倒序排序，而是反转列表元素的顺序
print("----------------列表元素反转reverse()----------------")
fruits.reverse();
print(fruits)

# 确定列表的长度
# 要确定列表的长度（即其中包含的元素数），可使用函数 len()。
# 下面的代码演示了如何使用函数 len() 获取列表 fruits 的长度：
print("----------------列表长度----------------")
print(len(fruits))

